///*
// * Copyright 2013-2018 the original author or authors.
// *
// * Licensed under the Apache License, Version 2.0 (the "License");
// * you may not use this file except in compliance with the License.
// * You may obtain a copy of the License at
// *
// *      https://www.apache.org/licenses/LICENSE-2.0
// *
// * Unless required by applicable law or agreed to in writing, software
// * distributed under the License is distributed on an "AS IS" BASIS,
// * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// * See the License for the specific language governing permissions and
// * limitations under the License.
// */
//
//package com.huike.springboot1.demos.web;
//
//import com.huike.springboot1.demos.Mapper.CommentMapper;
//import com.huike.springboot1.demos.pojo.Comment;
//import org.springframework.beans.factory.annotation.Autowired;
//import org.springframework.stereotype.Controller;
//import org.springframework.web.bind.annotation.*;
//
//import java.util.ArrayList;
//import java.util.List;
//
///**
// * @author <a href="mailto:chenxilzx1@gmail.com">theonefx</a>
// */
///*Spring 内含容器，里面存储一些比较常用的类
//将类或变量加载到容器的注解： Controller Service Component Configuration ...
//用@AutoWired取出这些容器里的类或方法变量
//*/
//@Controller
//public class BasicController {
////在"工具"里有“HTTP客户端”可创建一个http请求，可进行修改指定端口的内容,需要程序执行才能有效
//    // http://127.0.0.1:8080/hello?name=lisi
//    @RequestMapping("/hello")
////    @GetMapping("/hello")
////    @PostMapping("hello")
////    @PutMapping("hello")
////    @DeleteMapping("hello")
//
////    @RequestMapping 给这个方法添加一个访问路径：不限制请求方式的访问路径
////    @Get   获取，获取信息、数据使用，Get请求的参数会拼接在路径之后。
////    参数拼接在url的?之后，参数名=参数值，多个参数之间用&间隔；可缓存当前页面信息，可重复获取，方便下一次加载
////      参数有长度限制
////    域名和ip端口是绑定的，绑定是方便于记忆。网址组成：域名:端口/方法接口?参数名=参数值&参数名1=参数值1&...
////    @Post   提交：参数不可见(但可以用开发者工具/抓包查看参数)，相对get请求安全一点；信息不可缓存，参数没有长度限制
////    @Put  修改，丛属于Post请求
////    @Delete 删除 丛属于Post请求
//
////    RestFul接口命名规范：路径一致，请求方式不同则操作不同，可通过请求方式+请求路径，了解该接口作用
////      新增Post   /user
////      修改Put    /user/{userID}
////      删除Delete /user/{userID}
////      查询Get    /user/{userID}
//
//    @ResponseBody
////    Response：响应；Request：请求。
////    @ResponseBody：作用：返回json格式数据，有这个注解没有则返回页面，有这个注解有则返回具体内容
////    将所有返回信息全部转换成JSON格式(本质是有特定格式的字符串)，是常用于前后端数据交互的数据格式
///*    JSON格式：键值对：数字："key":123  字符串："key":"value"
//                      对象：{
//                                "key1":"value1",
//                                "key2":"value2"
//                           }
//                      集合：[
//                               {
//                                "key11":"value11 ",
//                                "key12":"value12"
//                               },
//                               {
//                                 "key21":"value21",
//                                 "key22":"value22"
//                               }
//                           ]
//*/
////    响应一个字符串(Hello 李四)，数字，对象,集合。要想返回一个对象就要使用toString()方法
//
////    @RequestParam的参数列表里，获取请求参数名:name,设置默认值:unknown user，
////          作用将请求参数name映射给形参name，用户访问时提交的参数和形参绑定，如果http对应的参数名不对应则使用默认值
//
//    public String hello(@RequestParam(name = "xxx", defaultValue = "unknown user") String name) {
//        return "Hello " + name;
//    }
////@RequestParam 设置请求参数和形参对应关系的注解，注解里也有参数
//    @RequestMapping ("/getUserList")
//    @ResponseBody
//    public List<User> getUserList() {
//        ArrayList<User> users = new ArrayList<>();
//        User user1 = new User();
//        user1.setName("张三");
//        user1.setAge(20);
//        users.add(user1);
//        User user2 = new User();
//        user2.setName("李四");
//        user2.setAge(22);
//        users.add(user2);
//        User user3 = new User();
//        user3.setName("王五");
//        user3.setAge(30);
//        users.add(user3);
//        return users;
//    }
//    @RestController          // 1. 先声明这是一个控制器
//    public class CommentController {
//
//        @Autowired
//        private CommentMapper commentMapper;   // 3. 注入放在字段上，没问题
//
//        @GetMapping("/comment")     // 4. 注解写在方法上
//        @ResponseBody               // 5. 或直接写在类上用 @RestController 代替
//        public Comment comment(@RequestParam(name = "xxx", defaultValue = "unknown user") String name) {
//            return commentMapper.findById(1);
//        }
//    }
//    // http://127.0.0.1:8080/user
//    @RequestMapping("/user")
//    @ResponseBody
//    public User user() {
//        User user = new User();
//        user.setName("theonefx");
//        user.setAge(666);
//        return user;
//    }
//
//    // http://127.0.0.1:8080/save_user?name=newName&age=11
//    @RequestMapping("/save_user")
//    @ResponseBody
//    public String saveUser(User u) {
//        return "user will save: name=" + u.getName() + ", age=" + u.getAge();
//    }
//
//    // http://127.0.0.1:8080/html
//    @RequestMapping("/html")
//    public String html(){
//        return "index.html";
//    }
//
//    @ModelAttribute
//    public void parseUser(@RequestParam(name = "name", defaultValue = "unknown user") String name
//            , @RequestParam(name = "age", defaultValue = "12") Integer age, User user) {
//        user.setName("zhangsan");
//        user.setAge(18);
//    }
//}
